package org.dromara.job.snailjob;

import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
import com.aizuda.snailjob.client.job.core.dto.JobArgs;
import com.aizuda.snailjob.client.model.ExecuteResult;
import com.aizuda.snailjob.common.core.util.JsonUtil;
import com.aizuda.snailjob.common.log.SnailJobLog;
import org.springframework.stereotype.Component;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：任务执行器组件
 */
@Component
@JobExecutor(name = "testJobExecutor")
public class TestAnnoJobExecutor {

    /**
     * 执行测试任务
     *
     * @param jobArgs 任务参数，包含任务执行所需的信息
     * @return 返回任务执行结果，包括成功、失败等状态
     *
     * 该方法首先将任务参数转换为JSON字符串格式，然后通过本地日志和远程日志记录器记录任务参数信息
     * 最后，返回一个表示执行成功的执行结果，附带成功执行的消息
     */
    public ExecuteResult jobExecute(JobArgs jobArgs) {
        // 记录本地日志，用于调试和错误追踪
        SnailJobLog.LOCAL.info("testJobExecutor. jobArgs:{}", JsonUtil.toJsonString(jobArgs));
        // 记录远程日志，用于远程监控和日志收集系统
        SnailJobLog.REMOTE.info("testJobExecutor. jobArgs:{}", JsonUtil.toJsonString(jobArgs));
        // 返回执行成功的结果，带有成功消息
        return ExecuteResult.success("测试成功");
    }
}
